# レッスン 4: 低解像度シャツをシミュレートする

このレッスンでは、レッスン 3 で説明したワークフローを使用して、キャラクタのシャツをシミュレートします。アトリビュートと値にはバリエーションがいくつかありますが、原則は同じです。

このレッスンでは、以下の操作を行います。

- Shirt_LowRes オブジェクトを nCloth に変換します。
- 高解像度メッシュ(Shirt_HighRes)の動作に影響するラップ デフォーマを作成します。
- nCloth tshirt プリセットを nCloth シャツに適用します。
- nCloth シャツのダイナミック プロパティ(Dynamic Properties)アトリビュートを編集します。
- nCloth シャツの nCache を作成します。
- 不完全に変形されたポリゴンや相互貫通など、シミュレーションの問題領域を特定します。
- nCloth シャツの精度設定を編集します。
- 相互貫通を解決します。

## レッスンの設定

説明どおりにレッスンを進めるために、レッスンを開始する前に次の手順を実行します。

1. nCloth の高度なテクニックのレッスン データをダウンロードしていない場合は、http://www.autodesk.co.jp/maya-advancedtechniques からダウンロードします。その後、nClothAdvancedTutorials ディレクトリを Maya プロジェクトとして設定します。

   このレッスンでは、レッスンのシーン ファイルに加えて、Maya ジオメトリのキャッシュ ファイルにアクセスする必要があります。

2. Character_LowRes_4.mb という名前のシーン ファイルを開きます。

   このファイルは、Maya プロジェクトとして設定した nClothAdvancedTutorials ディレクトリ内にあります。

3. キャラクタの胴体と靴をアニメートするジオメトリ キャッシュを読み込みます。詳細については、ジオメトリ キャッシュを読み込むするを参照してください。
4. nCloth シャツのシミュレーションを高速化するには、nCloth ズボンの新規キャッシュを作成するか、または前のレッスンで作成したズボンの nCache を使用します。

   新しい nCache を作成するには、アウトライナ(Outliner)で nCloth_Pants を選択し、nCache > 新規キャッシュの作成 > nObject(nCache > Create New Cache > nObject)を選択します。

   前のレッスンで作成した nCloth ズボンの nCache を使用するには、必要に応じてキャッシュを nCloth オブジェクトに再接続してください。詳細については、既存のキャッシュにオブジェクトを再接続するを参照してください。

前のレッスンで使用した Maya シーン ファイルを使用する場合は、次のことを確認してください。

- ディスプレイ レイヤ エディタ(Display Layer editor)で可視性をオフにして、Reference_Character オブジェクトを非表示にします。
- Pants_HighRes オブジェクトを非表示にします。

## シャツを nCloth に変換する

シャツを nCloth に変換するには

1. アウトライナ(Outliner)で Shirt_LowRes オブジェクトを選択して表示し、それからディスプレイ > 表示 > 選択項目の表示(Display > Show > Show Selection)を選択します。
2. 低解像度のシャツ オブジェクト(Shirt_LowRes)を選択して、nCloth > nCloth の作成(nCloth > Create nCloth) > を選択します。
3. nCloth の作成オプション(Create nCloth Options )ウィンドウでソルバ(Solver)ドロップダウン リストから nucleus1 を選択します。
4. クロスの作成(Create Cloth)をクリックします。

   低解像度のシャツが nCloth オブジェクトに変換され、既存の Maya Nucleus ソルバに追加されます。

5. 低解像度の nCloth シャツをシーンで特定しやすくするためにその名前を変更します。これを実行するには、アウトライナ(Outliner)でnCloth1 をダブル クリックし、nCloth_Shirt と入力してから Enter キーを押します。
6. アウトライナ(Outliner)で nCloth_Shirt を選択し、nCache > 新規キャッシュの作成 > nObject(nCache > Create New Cache > nObject)を選択して nCloth シャツのシミュレーションをキャッシュします。
7. シミュレーションを再生します。

### nCloth プリセットをシャツに適用する

シミュレーションを再生すると、次のことがわかります。

- フレーム 1033 付近では、シャツの襟が伸びすぎていて、模倣しようとしている生地に似ていません。
- フレーム 1033 では、いくつかのシャツの頂点がオブジェクト内で自己トラップしており、キャラクタのウエスト周辺にシャツとズボンの相互貫通が現れています。この原因となるのが、nCloth シャツと nCloth ズボンのオブジェクト間の不正確な衝突です。
- フレーム 1037 の後では、シャツの前側のポリゴン フェースが適切に変形されていません。
- フレーム 1040 と 1045 の間で、シャツの一部の頂点が nCloth でトラップされており、相互貫通があります。

これらの多数のシミュレーション上の問題を同時に解決する便利な方法として、nCloth アトリビュートのプリセットを nCloth シャツ オブジェクトに適用します。

nCloth プリセットをシャツに適用するには

1. シーン ビューで、nCloth シャツを選択します。
2. アトリビュート エディタ(Attribute Editor)で、nCloth_ShirtShape タブを選択します。
3. プリセット(Presets)ボタンをクリックして押したままにします。
4. tshirt プリセットを選択してから、置き換え(Replace) (tshirt > 置き換え(tshirt > Replace))を実行します。

T シャツのプリセットにより、次の重要なアトリビュート調整が行われます。

- 伸長の抵抗(Stretch Resistance)を 20 ～ 35 に調整します。
- ベンド角ドロップオフ(Bend Angle Dropoff)を 0 ～ 0.4 に調整します。

  ベンド角ドロップオフ(Bend Angle Dropoff)は、nCloth に適用されるフォースの角度と強さに応じてベンドフォースに対する抵抗を追加します。たとえば、ベンド角ドロップオフ(Bend Angle Dropoff)を大きくすると、角度が小さい場合よりも大きい場合に nCloth のベンドに対する抵抗が大きくなります。シャツのシミュレーションでは、フレーム 1032 で nCloth シャツがまとまり始めているときに、nCloth のベンドの度合いを減少させるベンド角ドロップオフ(Bend Angle Dropoff)の効果を確認できます。

- 質量(Mass)を 1.0 ～ 0.6 に調整します。

  質量(Mass)を減少させると、綿の T シャツのやや軽めの素材感を表現できます。

- ダンプ(Damp)を 0.0 ～ 0.8 に調整します。

nCloth シャツを選択してから nCache > キャッシュの置き換え > nObject(nCache > Replace Cache > nObject)を選択してシミュレーションをキャッシュし、それから再生して結果を観察します。

### 高解像度メッシュをラップする

このセクションでは、ラップ デフォーマを使用して高解像度シャツのインフルエンス オブジェクトを作成します。

高解像度メッシュをラップするには

1. アウトライナ(Outliner)で Shirt_HighRes オブジェクトを選択して表示し、それからディスプレイ > 表示 > 選択項目の表示(Display > Show > Show Selection)を選択します。
2. シーン ビューで Shift キーを押しながら nCloth シャツ オブジェクトを選択します。

   Shirt_LowRes と Shirt_HighRes の両方が選択されている必要があります。

3. アニメーション(Animation)メニュー セットから、アニメーション デフォーム > フル デフォーム メニューを開く(Anim Deform > Open Full Deform Menu)を選択します。
4. 表示される デフォーム(Deform )メニューから、ラップ(Wrap) > を選択します。
5. ラップの作成オプション(Create Wrap Options)ウィンドウで、排他バインド(Exclusive Bind)をオンにします。
6. 作成(Create)ボタンをクリックします。

   アトリビュート エディタ(Attribute Editor)にラップ ノードが表示され、Shirt_LowResBase オブジェクトがアウトライナ(Outliner)に表示されます。

7. Shirt_HighRes オブジェクトを非表示(Hide)にします。

### シミュレートされた nCloth で問題領域を特定する

シミュレーションを再生すると、次のことがわかります。

- フレーム 1032 では、シャツの襟周りの過度な伸長が軽減されています。それでも、nCloth のこの領域はまだ伸長しすぎています。
- フレーム 1033 では、ウエスト領域の前回の自己トラップした頂点の問題は解決されていますが、相互貫通はまだ残っています。

nCloth の T シャツ プリセットにより、シミュレーションの多数の問題が改良されましたが、さらに調整が必要なダイナミック プロパティ(Dynamic Properties)アトリビュートもあります。

ダイナミック プロパティ(Dynamic Properties) アトリビュートを編集する場合は、シミュレーションをキャッシュしてアトリビュートを調整しながら再生し、新しい設定が nCloth シャツの動作にどのように作用するか確認します。比較対象として、リファレンス キャラクタをシーンに表示することもできます。これを行うには、ディスプレイ レイヤ エディタ(Display Layer Editor)で可視(Visible)をオンにします。

シャツのダイナミック プロパティ(Dynamic Properties)を編集するには

1. アトリビュート エディタ(Attribute Editor)で、nCloth_ShirtShape タブをクリックします。
2. ダイナミック プロパティ(Dynamic Properties) セクションで、次の設定を行います。
   - 伸長の抵抗(Stretch Resistance): 55
   - 圧縮の抵抗(Compression Resistance): 3
   - ベンドの抵抗(Bend Resistance): 0.3
3. シミュレーションをキャッシュしてから再生します。

### 精度設定(Quality Settings)を編集して相互貫通を解決する

シミュレーションを再生すると、次のことがわかります。

- フレーム 1028 と 1034 の間では、キャラクタのウエストの周囲にはズボンとシャツが重なり合わなくなった領域があります。キャラクタの背中部分にもまだズボンによってトラップされたシャツの頂点がいくつかあります。

  nCloth オブジェクト間にオフセットが発生しています。これは衝突の厚み(Thickness)が現在は高解像度のラップ デフォーマに合わせて設定されているためです。この問題は厚み(Thickness)を減らすと解決する場合もありますが、調整結果として相互貫通が発生する可能性があることに注意してください。このチュートリアルでは、厚み(Thickness)は現在の値のままにしておきます。

メッシュをスムーズにして相互貫通のインスタンスを削減するには、精度設定(Quality Settings)を編集します。

精度設定(Quality Settings)を編集するには

1. アトリビュート エディタ(Attribute Editor)で、nCloth_ShirtShape タブを選択します。
2. 精度設定(Quality Settings)セクションで、次のように設定します。
   - 最大反復回数(Max Iterations): 12000
   - 自己衝突最大反復回数(Max Self Collision Iterations): 8
   - トラップ チェック(Trapped Check)をオンにします。
   - 自己トラップのチェック(Self Trapped Check)をオンにします。
3. シミュレーションをキャッシュして(nCache > キャッシュの置き換え > nObject(nCache > Replace Cache > nObject))、再生します。

### シミュレーションを微調整します。

シミュレーションの精度をさらに向上させ、シャツの胸部分の重なり(フレーム 1040 参照)など、問題領域の相互貫通のインスタンスを減少させるには、押し出し(Push Out)と押し出し半径(Push Out Radius)を設定します。アトリビュート値を次の範囲に設定してみてください。

- 押し出し(Push Out): 0.1 ～ 20
- 押し出し半径(Push Out Radius): 10 ～ 50

シミュレーションの特定のフレームでメッシュの複製を作成し、設定を試します。たとえば、フレーム 1040 と 1043 でメッシュの複製を作成します。シミュレーションをキャッシュし、タイム スライダ(Time Slider)をスクラブしてシミュレーションを複製メッシュと比較し、アトリビュート編集の結果を確認します。

### 最終的な低解像度シミュレーションをシミュレート済みのリファレンス キャラクタ メッシュと比較する

このレッスンでは、nCloth シャツと nCloth ズボンのオブジェクトの最終的なシミュレーション結果をシミュレート済みのリファレンス キャラクタ オブジェクト(オリジナルのシミュレート済み高解像度メッシュ)と比較します。

シミュレーションを比較するには

1. アウトライナ(Outliner)で Shirt_LowRes オブジェクトと Pants_LowRes オブジェクトを選択して非表示にし、それからディスプレイ > 非表示 > 選択項目の非表示(Display > Hide > Hide Selection)を選択します。
2. アウトライナ(Outliner)で Shirt_HighRes オブジェクトと Pants_HighRes オブジェクトを選択して表示し、それからディスプレイ > 表示 > 選択項目の表示(Display > Show > Show Selection)を選択します。
3. ディスプレイ レイヤ エディタ(Display Layer Editor) (チャネル ボックス(Channel Box)/レイヤ エディタ(Layer Editor) > ディスプレイ(Display)タブ > レイヤ(Layers) > 選択したレイヤを設定(Set Selected Layers))で、可視(Visible)をオンにして Reference_Character オブジェクトを表示します。
4. シェーディング(Shading)メニューで、ワイヤフレーム付きシェード(Wireframe on Shaded)をオンにします。
5. タイムライン(Timeline)をスクラブして、アニメーションでの nCloth メッシュの動作を比較します。タイムラインをスクラブしながらシーンをドリー、タンブルし、問題領域に接近して観察できるようにします。
   注:

   シミュレーションを再生またはスクラブしたときにシーン ビューで Reference_Character がアニメートされない場合は、必要に応じてリファレンス キャラクタのキャッシュをその個々のオブジェクトに再接続してください。詳細については、既存のキャッシュにオブジェクトを再接続するを参照してください。

高解像度オブジェクトとリファレンス キャラクタ オブジェクトのシミュレート方法にはわずかな違いがありますが、nCloth 全体では両方とも同じように動作します。シミュレーションをキャッシュして低解像度メッシュでアトリビュートを調整するシミュレーション ワークフローを使用し、この作業を繰り返して合計時間が削減されることを考えると、このワークフローがよい結果を生むといえます。リファレンス キャラクタ オブジェクトはシミュレーションを最適化することによって改良できますが、解像度が高いメッシュではキャッシングやシミュレーション時間が低速になり、アトリビュート調整により多くの時間を要します。